package com.kuyun.base.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import com.kuyun.base.base.Page;
import com.kuyun.base.model.BaseDictionary;
import com.kuyun.base.model.BaseGroup;
import com.kuyun.base.model.ValidFormResult;
import com.kuyun.base.model.ZtreeBean;

/**
 * 组织机构服务接口
 * 
 * @author 王坤
 * @date 创建时间：2016年6月18日 下午7:58:05
 */
public interface BaseGroupService {

	/**
	 * 增加组织机构服务
	 */
	public String insert(BaseGroup baseGroup);

	/**
	 * 更新组织机构
	 */
	public String update(BaseGroup baseGroup);

	/**
	 * 查询所有组织机构
	 */
	public List<ZtreeBean> getGroupTree();

	/**
	 * 根据code查询组织机构
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月25日下午2:39:06
	 *
	 * @param dicPrivilegeTypeMenu
	 * @return
	 */
	public BaseGroup findByCode(String dicPrivilegeTypeMenu);

	/**
	 * 根据ID查询组织机构
	 */
	public BaseGroup findByID(String id);

	/**
	 * 根据Parent查询组织机构
	 */
	public Page<BaseGroup> findByParentCode(Page<BaseGroup> page, String parentId, String search);

	/**
	 * 根据Parent查询组织机构总量
	 */
	public Integer findByParentCodeCount(String parentId, String search);

	/**
	 * 删除组织机构
	 */
	public ValidFormResult deleteGroup(@Param("parentId") String parentId);

	/**
	 * 判断code是否存在
	 */
	public boolean checkCode(BaseGroup baseGroup, String id);

	/**
	 * 保存用户组织机构信息
	 * 
	 * @author 唐靖
	 *
	 * @date 2017年7月4日下午9:40:41
	 *
	 * @param ids
	 * @param id
	 */
	public void saveUserGroup(String ids, String id);

	/**
	 * 为了用户选择而生成的tree
	 * 
	 * @author 唐靖
	 *
	 * @date 2017年7月4日下午9:52:44
	 *
	 * @param userId
	 * @return
	 */
	public List<ZtreeBean> getBaseGroupTreeForUser(String userId);
}
